package test;

/**
 * 自定义类加载器
 */
public class MyClassLoader extends ClassLoader{

    /**
     *重写findClass
     * 作用就是怎么加载 class文件
     */
    @Override
    protected Class<?> findClass(String name) throws ClassNotFoundException {
        //自己实现
        throw new ClassNotFoundException(name);
    }


    /**
     * 重写loadClass 打破双亲委派
     * 作用就是 指定加载器的顺序
     */
    @Override
    public Class<?> loadClass(String name) throws ClassNotFoundException{
        //自己实现
        Class<?> clazz = null;

        // 直接自己加载
        clazz = this.findClass(name);
        if (clazz != null) {
            return clazz;
        }
        // 自己加载不了，再调用父类loadClass，保持双亲委托模式
        return super.loadClass(name);
    }
}
